#include <stdlib.h>
#include <string.h>

#include <TabLite.h>

TabElem* TabElemSetStr(TabElem* elem, char *str)
{
    if (!elem || !str)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;    
    }
    elem->tag = TAB_TAG_STR;
    elem->valStr = str;
    elem->hashKey = 0;
    TabErrorSet(TAB_ERROR_OK); 
    return elem;
}

TabElem* TabElemSetDec(TabElem* elem, double value)
{
    if (!elem)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;    
    }
    elem->tag = TAB_TAG_DEC;
    elem->valDec = value;
    elem->hashKey = 0;
    TabErrorSet(TAB_ERROR_OK); 
    return elem;
}

TabElem* TabElemSetHex(TabElem* elem, unsigned long value)
{
    if (!elem)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;    
    }
    elem->tag = TAB_TAG_HEX;
    elem->valHex = value;
    elem->hashKey = 0;
    TabErrorSet(TAB_ERROR_OK); 
    return elem;
}

TabElem* TabElemSetInt(TabElem* elem, long value)
{
    if (!elem)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;    
    }
    elem->tag = TAB_TAG_INT;
    elem->valInt = value;
    elem->hashKey = 0;
    TabErrorSet(TAB_ERROR_OK); 
    return elem;
}

TabElem* TabElemSetTab(TabElem* elem, TabLite* tab)
{
    if (!elem)
    {
        TabErrorSet(TAB_ERROR_ARG); 
        return NULL;    
    }
    elem->tag = TAB_TAG_TAB;
    elem->valTab = tab;
    elem->hashKey = 0;
    TabErrorSet(TAB_ERROR_OK); 
    return elem;
}
